You can configure your Kanzi application:
onConfigure()
function.While you can configure your Kanzi application in the onConfigure()
function, in application.cfg you can configure some parameters without recompiling your application or even without a C++ application. The configuration you specify in application.cfg overrides the configuration you specify in onConfigure()
.
For example, in application.cfg you can tell your Kanzi application which .kzb binary to load, enable performance information in your application, and set how many threads you want to use for loading the application resources.
When you have more than one Kanzi application executable file in a directory you can specify a separate configuration file for each executable.
To set which application.cfg to use:
-config
flag, and the name of the configuration file.MyApplication.exe -config=myConfiguration.cfg
onConfigure()
function useconfiguration.configurationName = "myConfiguration.cfg"
To configure your Kanzi application using application.cfg, create an application.cfg file that contains the parameter names and their values in:
When you launch your Kanzi application, the application uses the parameters in the application.cfg to configure your application.
Setting | Description |
---|---|
BinaryName
|
Kzb binary the application loads |
DefaultDisplayIndex
|
Default display when running the application in full-screen mode |
FPSInfoEnabled
|
Show the performance information |
GlyphCacheHeight
GlyphCacheWidth
|
Size of the glyph cache texture |
LoadingThreadCount
|
Loading preferences |
MaxPendingResources
|
Maximum number of resources processed by the loading threads |
LogVisualizationEnabled
|
Show the Log window |
MaximumFPS
|
Maximum FPS |
SurfaceBitsStencil
SurfaceBitsDepthBuffer
SurfaceBitsRed
SurfaceBitsGreen
SurfaceBitsBlue
SurfaceBitsAlpha
SurfacePriority
SurfaceSamplesAntialiasing
|
Surface properties |
UseMemoryMappedLoading
|
Memory mapped loading |
WindowStyle
|
Window style of the application |
WindowX
WindowY
WindowWidth
WindowHeight
|
Position and size of the application window |
You can enable the display of Performance HUD that shows the performance information for your Kanzi application. Use Kanzi's Performance HUD to see how your application performs on target devices and to find bottlenecks and areas for improvement.
Performance HUD shows the overall performance indicators of your Kanzi application during the last 300 frames including:glDrawElements
and glDrawArrays
).getBatchCount()
.getTriangleCount()
.getTextureSwitchCount()
.getFramebufferSwitchCount()
.getShaderSwitchCount()
.getUniformSendCount()
.getBufferSwitchCount()
.getHeavyweightCallCount()
.See Best practices.
In application.cfg | FPSInfoEnabled = value | ||||
In onConfigure() | configuration.previewProperties.fpsInfoEnabled = value; | ||||
Values |
| ||||
application.cfg example | # Enables the Performance HUD in Kanzi application. FPSInfoEnabled = 1 | ||||
onConfigure() example | // Enables the Performance HUD in Kanzi application. |
You can enable the printing of the application log messages to the application window.
To display the performance information of your application, see Show the performance information.
In application.cfg | LogVisualizationEnabled = value | ||||
In onConfigure() | configuration.previewProperties.logVisualizationEnabled = value; | ||||
Values |
| ||||
application.cfg example | # Enables the display of the application log in the application window. LogVisualizationEnabled = 1 | ||||
onConfigure() example | // Enables the display of the application log in the application window. |
When you use a Text BlockKanzi creates a glyph cache texture for every font and font size combination. You can set the height and width of glyph cache textures to adjust the size of the glyph cache texture either when it gets full, or to optimize the performance of your Kanzi application.
Because larger glyph cache textures use more VRAM, try different sizes before you set the final size . The upper limit of the glyph cache texture size depends on the GPU, but usually it is 2048 by 2048 pixels. The default size of the glyph cache texture is 512 by 512 pixels.
Kanzi applies the size of the glyph cache texture to all glyph cache textures.
In application.cfg | GlyphCacheHeight = size | ||
In onConfigure() | configuration.glyphCacheHeight = size; | ||
Values |
| ||
application.cfg example | # Sets the glyph cache texture height to 768, and width to 1024 pixels. GlyphCacheHeight = 768 | ||
onConfigure() example | // |
When users run your Kanzi application in an environment with a multi-core processor, Kanzi automatically uses multiple CPU cores to load the GPU resources in the .kzb files to RAM. See Loading resources in parallel.
GPU resources Kanzi loads in parallel include all types of textures, shaders, and meshes. To deploy these resources from RAM to GPU memory and to load prefab templates, Kanzi always uses the main thread. See Images and textures best practices, Shaders best practices, Meshes best practices.
In application.cfg | LoadingThreadCount = threads | ||
In onConfigure() | configuration.loadingThreadCount = threads; | ||
Values |
| ||
application.cfg example |
| ||
onConfigure() example |
|
You can set the maximum number of resources that the loading threads process at the same time. By increasing the number of resources you can speed up the loading, but at the same time you increase the peak memory use during loading because you can load more resources to the memory before they are deployed to the GPU.
In application.cfg | MaxPendingResources = resources | ||
In onConfigure() | configuration.maxPendingResources = resources; | ||
Values |
| ||
application.cfg example | # Sets the maximum number of resources processed by the loading # threads to the number of loading threads + 1. This is the default value. MaxPendingResources = 0 # Sets the maximum number of resources processed by the loading # threads to 20 resources. MaxPendingResources = 20 | ||
onConfigure() example | // Sets the maximum number of resources processed by the loading // threads to the number of loading threads + 1. This is the default value. configuration.maxPendingResources = 0; // Sets the maximum number of resources processed by the loading // threads to 20 resources. configuration.maxPendingResources = 20; |
Surface properties control the properties of the hardware accelerated graphics surface on which Kanzi renders. They control the relation between image quality and rendering speed. The surface properties you set are considered requests to be matched by the graphics system of the target hardware. Whether a given request is considered an upper bound, a lower bound, or an exact value is platform dependent.
The default values of surface properties are platform dependent. You can get them by calling kzsSurfaceGetDefaultProperties()
.
In application.cfg |
| ||||||||||||||||||
In onConfigure() | configuration.defaultSurfaceProperties.bitsStencil = stencil; | ||||||||||||||||||
Values |
| ||||||||||||||||||
application.cfg example |
| ||||||||||||||||||
onConfigure() example |
|
When you run your Kanzi application in full-screen mode on a system with more than one display, you can set the default display where your Kanzi application window appears.
Note that in order to use the default application display, you have to set the window style of your Kanzi application to full-screen. See Window style of the application and KzsWindowProperties
.
In application.cfg | DefaultDisplayIndex = index | ||
In onConfigure() | configuration.defaultDisplayIndex = index; | ||
Value |
| ||
application.cfg example | # Sets the second display as the default display for the full-screen Kanzi application window. DefaultDisplayIndex = 1 | ||
onConfigure() example | // Sets the second display as the default display for the full-screen Kanzi application window. |
You can set the position of the application on the screen relative to the upper-left corner of the screen and the size of the application window in pixels. The default size of the window is 640x480 pixels and center of the device screen.
To change the style of the window, see Window style of the application.
In application.cfg | WindowX = positionX | ||||||||
In onConfigure() | configuration.defaultWindowProperties.x = positionX; | ||||||||
Value |
| ||||||||
application.cfg example |
| ||||||||
onConfigure() example |
|
When running your Kanzi application on an operating system that supports memory mapping of files, you can enable memory mapped loading for the .kzb files your Kanzi application uses. When you enable memory mapped loading you can reduce the loading times of your Kanzi application because it reduces the amount of file accesses.
Memory mapping of files is supported, for example, on Windows, Linux, and QNX operating systems. Before enabling memory mapped loading, check that it is supported on the platform running your Kanzi application.
To check whether memory mapped loading is supported on your platform, call the kzsMemoryMappedFileIsSupported()
function. The function returns True if memory mapped loading is supported, and False if it is not supported.
If you enable memory mapped loading on a platform that does not support this feature, Kanzi shows a warning and uses regular file access for loading the .kzb files.
In application.cfg | UseMemoryMappedLoading = value | ||||
In onConfigure() | configuration->useMemoryMappedLoading = value; | ||||
Values |
| ||||
application.cfg example | # Enables the memory mapped loading for the .kzb files in your Kanzi application. UseMemoryMappedLoading = 1 | ||||
onConfigure() example | // |
You can set the style of the window of your Kanzi application. Besides the default window with a border that users can resize, you can set your Kanzi application to launch in a window without a border, in a window of fixed size, and in a window that occupies the entire device screen.
To set the position and size of the application window, see Position and size of the application window.
In application.cfg | WindowStyle = "style" | ||
In onConfigure() | configuration.defaultWindowProperties.style = style; | ||
Value |
| ||
application.cfg example |
| ||
onConfigure() example | // Launch the application in a window that occupies the whole screen of the device. |
You can limit the number of frames rendered per second by setting the maximum frame rate. See Show the performance information.
In application.cfg | MaximumFPS = limit | ||||
In onConfigure() | configuration.fpsConstraints.enabled = value; | ||||
Value |
| ||||
application.cfg example |
| ||||
onConfigure() example |
|
You can set which .kzb binary or binary configuration file your Kanzi application loads when a you launch your Kanzi application.
See Using .kzb binaries.
In application.cfg | BinaryName = "name" | ||
In onConfigure() | configuration.binaryName = "name"; | ||
Value |
| ||
application.cfg example |
| ||
onConfigure() example |
|